package chapter05

/**
 * 函数参数
 */
object Test03_FunctionParameter {

  /**
   * （1）可变参数
   * （2）如果参数列表中存在多个参数，那么可变参数一般放置在最后
   * （3）参数默认值，一般将有默认值的参数放置在参数列表的后面
   * （4）带名参数
   *
   * @param args
   */
  def main(args: Array[String]): Unit = {

    //(1)可变参数
    def f1(str: String*): Unit = {
      println(str)
    }

    println(f1("a"))
    println(f1("e", "b", "c", "d"))

    println("==============================")

    //（2）如果参数列表中存在多个参数，那么可变参数一般放置在最后
    def f2(str: String, str1: String*): Unit = {
      println("str: " + str + " str1: " + str1)
    }

    println(f2("a"))
    println(f2("e", "b", "c", "d"))


    println("==============================")

    //（3）参数默认值，一般将有默认值的参数放置在参数列表的后面
    def f3(name: String = "atguigu"): Unit = {
      println("my shool is " + name)
    }

    println(f3("张三"))
    println(f3())


    println("==============================")
    //（4）带名参数

    def f4(name: String = "atguigu", age: Int): Unit = {
      println(s"${age}岁的${name}在尚硅谷学习")
    }

    println(f4("alice",20))
    println(f4(age=23,name="测试"))
    println(f4(age=23))


  }
}
